package edu.eam.gruposenior.gestorLEcciones.controladores;

import java.util.List;

import javax.persistence.EntityManager;

import edu.eam.gruposenior.gestorLEcciones.entidades.CategoriaSubcategoria;
import edu.eam.gruposenior.gestorLEcciones.util.FactoryEntityManager;

public class CategoriaController {

	private EntityManager em = FactoryEntityManager.getEm();

	public void crearCategoria(String nombre,
			CategoriaSubcategoria categoriaSubcategoria) {

		em.getTransaction().begin();
		CategoriaSubcategoria categoria = new CategoriaSubcategoria();

		categoria.setCategoriaSubcategoria(categoriaSubcategoria);
		categoria.setNombre(nombre);

		em.persist(categoria);

		em.getTransaction().commit();
	}

	public void editarCategoria(Long id, String nombre,
			CategoriaSubcategoria categoriaSubcategoria) throws Exception {

		CategoriaSubcategoria categoria = buscarCategoria(id);

		if (categoria != null) {

			em.getTransaction().begin();

			categoria.setCategoriaSubcategoria(categoriaSubcategoria);
			categoria.setNombre(nombre);

			em.merge(categoria);

			em.getTransaction().commit();
		} else {
			throw new Exception("No existe la categoria");
		}

	}

	public CategoriaSubcategoria buscarCategoria(Long id) {
		return em.find(CategoriaSubcategoria.class, id);
	}

	public List<CategoriaSubcategoria> categorias() {
		return em
				.createNamedQuery(CategoriaSubcategoria.FIND_ALL)
				.getResultList();
	}

	public List<CategoriaSubcategoria> subcatgoriasCategoria(Long idCat) {
		return em
				.createNamedQuery(CategoriaSubcategoria.FIND_CATEGORIA_BY_CATEGORIA)
				.setParameter(CategoriaSubcategoria.PARAMETRO_CATEGORIA, idCat)
				.getResultList();
	}

	public CategoriaSubcategoria cargarRaiz() {
		return em.find(CategoriaSubcategoria.class,
				1l);
	}

}
